package com.keyingbo.orm.framework;

import com.keyingbo.orm.framework.support.Order;
import com.keyingbo.orm.framework.support.ParamMap;

import java.io.Serializable;
import java.util.List;

/**
 * @Auther: KEYB
 * @Date: 2019-4-28 10:25
 * @Description:
 */
public interface IEntityStatement<T> {
    /**
     * 通过ID查询单个
     * @param id
     * @return
     */
    public T find(Serializable id);
    /**
     * 新增一个实体
     * @param t
     * @return
     */
    public void create(T t);

    /**
     * 更新一个实体
     * @param t
     */
    public void update(T t)throws Exception;

    /**
     * 删除单个实体
     * @param entity
     * @return
     */
    public int delete(T entity) throws IllegalAccessException, Exception;

    /**
     * 获取列表
     * @param pm
     * @param orders
     * @return
     */
    public List<T> findBy(ParamMap pm, Order... orders);
    /**
     * 获取列表
     * @param pm
     * @return
     */
    public List<T> findBy(ParamMap pm);
    /**
     * 获取所有列表
     * @return
     */
    public List<T> findAll();
}
